// { dg-do compile { target c++2a } }

template<typename T>
concept Int = __is_same_as(T, int);

// Type template parameters
template<Int T = int> struct S1 { };
template<Int = int> struct S2;
template<Int T> struct S2 { };

// Non-type template parameters
template<Int auto N = 0> struct S3 { };
template<Int auto = 0> struct S4;
template<Int auto N> struct S4 { };

S1<> s1;
S2<> s2;
S3<> s3;
S4<> s4;
